package com.ruoyi.project.dict.zi.service.impl;

import com.ruoyi.common.constant.RedisKey;
import com.ruoyi.common.utils.text.Convert;
import com.ruoyi.framework.aspectj.lang.annotation.DataSource;
import com.ruoyi.framework.aspectj.lang.enums.DataSourceType;
import com.ruoyi.project.dict.zi.domain.Zi;
import com.ruoyi.project.dict.zi.mapper.ZiMapper;
import com.ruoyi.project.dict.zi.service.IZiService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 生字管理Service业务层处理
 *
 * @author shixiangwen
 * @date 2020-09-02
 */
@Service
@DataSource(DataSourceType.DICT)
public class ZiServiceImpl implements IZiService {

    @Autowired
    private ZiMapper ziMapper;

    @Autowired
    @Qualifier("commonRedisTemplate")
    RedisTemplate<String, String> redisTemplate;


    /**
     * 查询生字管理
     *
     * @param id 生字管理ID
     * @return 生字管理
     */
    @Override
    public Zi selectZiById(Long id) {
        Zi zi = ziMapper.selectZiById(id);
        zi.setZi(new String(zi.getZiBytes()));
        return zi;
    }

    /**
     * 查询生字管理列表
     *
     * @param zi 生字管理
     * @return 生字管理
     */
    @Override
    public List<Zi> selectZiList(Zi zi) {
        List<Zi> zis = ziMapper.selectZiList(zi);
        zis.forEach(item -> {
            item.setZi(new String(item.getZiBytes()));
        });
        return zis;
    }

    /**
     * 新增生字管理
     *
     * @param zi 生字管理
     * @return 结果
     */
    @Override
    public int insertZi(Zi zi) {
        return ziMapper.insertZi(zi);
    }

    /**
     * 修改生字管理
     *
     * @param zi 生字管理
     * @return 结果
     */
    @Override
    public int updateZi(Zi zi) {
        int effect = ziMapper.updateZi(zi);
        if (effect > 0) {
            redisTemplate.delete(RedisKey.Dict.getZiKey(zi.getZi()));
        }
        return effect;
    }

    /**
     * 删除生字管理对象
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteZiByIds(String ids) {
        return ziMapper.deleteZiByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除生字管理信息
     *
     * @param id 生字管理ID
     * @return 结果
     */
    @Override
    public int deleteZiById(Long id) {
        return ziMapper.deleteZiById(id);
    }
}
